﻿namespace MicroCloud.Identity.Entities
{
    /// <summary>
    /// 实体类：组织机构信息
    /// </summary>
    [Table(nameof(Organization), Schema = TableSchemaConstants.Identity)]
    [Description("组织机构信息")]
    [ValueGenerate(ValueGenerateRule.Never, ValueGenerateMode.Snowflake)]
    public class Organization : OrganizationBase<long, long>
    {
        #region "属性"
        // 导航属性
        #region "获取或设置 父组织机构信息"
        /// <summary>
        /// 获取或设置 父组织机构信息
        /// </summary>
        public virtual Organization Parent { get; set; }
        #endregion
        #region "获取或设置 子组织机构集合"
        /// <summary>
        /// 获取或设置 子组织机构集合
        /// </summary>
        public virtual ICollection<Organization> Children { get; set; } = new List<Organization>();
        #endregion

        #region "获取或设置 组织机构证照"
        /// <summary>
        /// 获取或设置 组织机构证照
        /// </summary>
        public virtual OrganizationPortfolio Portfolio { get; set; } = new OrganizationPortfolio();
        #endregion
        #region "获取或设置 组织机构详细信息"
        /// <summary>
        /// 获取或设置 组织机构详细信息
        /// </summary>
        public virtual OrganizationDetail Detail { get; set; } = new OrganizationDetail();
        #endregion

        #region "获取或设置 组织机构声明信息集合"
        /// <summary>
        /// 获取或设置 组织机构声明信息集合
        /// </summary>
        public virtual ICollection<OrganizationClaim> Claims { get; set; } = new List<OrganizationClaim>();
        #endregion

        #region "获取或设置 分配的用户组织机构信息集合"
        /// <summary>
        /// 获取或设置 分配的用户组织机构信息集合
        /// </summary>
        public virtual ICollection<UserOrganization> UserOrganizations { get; set; } = new List<UserOrganization>();
        #endregion
        #region "获取或设置 分配的角色组织机构信息信息集合"
        /// <summary>
        /// 获取或设置 分配的角色组织机构信息信息集合
        /// </summary>
        public virtual ICollection<RoleOrganization> RoleOrganizations { get; set; } = new List<RoleOrganization>();
        #endregion

        #endregion

    }
}
